package article3.singleton;

/**
 * 实现singleton的第一方法
 * 构造器私有并导出共有的静态成员
 * 私有构造器仅被调用1次，用来实例化公有的静态 final域 INSTANCE 由于
 * 缺少公有的或者受保护的构造器，所以保证了 SingletonWithPublicFinalField 的全局唯一性 一旦 SingletonWithPublicFinalField 类被实例
 * 化，将只会存在一个 SingletonWithPublicFinalField 实例 ，不 也不少 客户端的任何行为都不会改变这一点，
 * 要提醒一点：享有特权的客户端可以借助 AccessibleObject.setAccessible 方法，通过反射机制（详见第 65 条）
 * 调用私有构造器 如果需要抵御这种攻击，可以修改构造器，让它在被要求创建第 个实例的时候抛出异常
 *
 * @author cctv
 */
public class SingletonWithPublicFinalField {

    public static final SingletonWithPublicFinalField INSTANCE = new SingletonWithPublicFinalField();
    private SingletonWithPublicFinalField(){

    }
}
